import numpy as np
import matplotlib.pyplot as plt

def quadratic_function(a, b, c):
    """
    创建一个二次方程函数 y = ax^2 + bx + c
    
    参数:
    a, b, c: 二次方程的系数
    
    返回:
    函数对象
    """
    def func(x):
        return a * x**2 + b * x + c
    return func

def plot_quadratic(a, b, c, x_range=(-20, 20)):
    """
    绘制二次方程曲线
    
    参数:
    a, b, c: 二次方程的系数
    x_range: x轴范围，默认为(-10, 10)
    """
    # 创建二次方程函数
    func = quadratic_function(a, b, c)
    
    # 生成x轴数据
    x = np.linspace(x_range[0], x_range[1], 400)
    
    # 计算y值
    y = func(x)
    
    # 绘制曲线
    plt.figure(figsize=(10, 6))
    plt.plot(x, y, label=f'y = {a}x² + {b}x + {c}')
    
    # 绘制x轴和y轴
    plt.axhline(y=0, color='k', linewidth=0.5)
    plt.axvline(x=0, color='k', linewidth=0.5)
    
    # 添加网格
    plt.grid(True, alpha=0.3)
    
    # 添加标题和标签
    plt.title(f'二次方程曲线: y = {a}x² + {b}x + {c}')
    plt.xlabel('x')
    plt.ylabel('y')
    
    # 添加图例
    plt.legend()
    
    # 显示图形
    plt.show()
    
    
def plot_quadratic2(a, b, c, a2,b2,c2, x_range=(-20, 20)):
    """
    绘制二次方程曲线
    
    参数:
    a, b, c: 二次方程的系数
    x_range: x轴范围，默认为(-10, 10)
    """
    # 创建二次方程函数
    func = quadratic_function(a, b, c)
    func2 = quadratic_function(a2, b2, c2)
    
    # 生成x轴数据
    x = np.linspace(x_range[0], x_range[1], 400)
    
    # 计算y值
    y = func(x)
    y2 = func2(x)
    
    # 绘制曲线
    plt.figure(figsize=(10, 6))
    plt.plot(x, y, label=f'y = {a}x² + {b}x + {c}')
    plt.plot(x, y2, label=f'y = {a2}x² + {b2}x + {c2}')
    
    # 绘制x轴和y轴
    plt.axhline(y=0, color='k', linewidth=0.5)
    plt.axvline(x=0, color='k', linewidth=0.5)
    
    # 添加网格
    plt.grid(True, alpha=0.3)
    
    # 添加标题和标签
    plt.title(f'二次方程曲线: y = {a}x² + {b}x + {c}，y = {a2}x² + {b2}x + {c2}')
    plt.xlabel('x')
    plt.ylabel('y')
    
    # 添加图例
    plt.legend()
    
    # 显示图形
    plt.show()